package top.lshaci.learning.singleton;

import lombok.AccessLevel;
import lombok.NoArgsConstructor;

/**
 * SafeThreadIdler
 * <pre>
 *     线程安全 - 懒汉式
 *     1) 解决了线程不安全问题
 *     2) 效率太低，每个线程在想获得类的实例时候，执行instance()方法都要进行同步，
 *        而其实这个方法只执行一次实例化代码就够了，后面的想获得该类实例，直接return就行了
 *
 *    方法进行同步效率太低
 * </pre>
 *
 * @author lshaci
 * @since 1.0.0
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class SafeThreadIdler {

    private static SafeThreadIdler singleton;

    public static synchronized SafeThreadIdler instance() {
        if (singleton == null) {
            singleton = new SafeThreadIdler();
        }
        return singleton;
    }
}
